package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.IMemoConfigDAO;
import org.jsola.hr.dto.MemoConfigAddDTO;
import org.jsola.hr.dto.MemoConfigUpdateDTO;
import org.jsola.hr.dto.MemoInfoUpdateDTO;
import org.jsola.hr.entity.MemoConfigDO;
import org.jsola.hr.query.MemoConfigQuery;
import org.jsola.hr.vo.MemoConfigListVO;
import org.jsola.hr.vo.MemoConfigVO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 备忘录配置
 *
 * @author zhr
 */
public interface IMemoConfigService extends IService<IMemoConfigDAO, MemoConfigDO> {

    /**
     * 新增备忘录配置
     * @param memoConfigAddDTO 新增备忘录配置DTO
     * @param tokenUser 当前用户
     * @return 备忘录配置详情信息
     */
    MemoConfigVO save(MemoConfigAddDTO memoConfigAddDTO, TokenUser tokenUser);

    /**
     * 修改备忘录配置
     * @param memoConfigUpdateDTO 修改备忘录配置DTO
     * @param tokenUser 当前用户
     * @return 更新数量
     */
    int update(MemoConfigUpdateDTO memoConfigUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除备忘录配置，物理删除，更新is_valid字段，从回收站删除
     * @param tokenUser 当前用户
     * @param memoConfigIds 备忘录配置id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, String...memoConfigIds);

    /**
     * 根据备忘录配置id查找
     * @param memoConfigId 备忘录配置id
     * @param siteId 所属站点id
     * @return 备忘录配置详情信息
     */
    MemoConfigVO selectById(String memoConfigId, String siteId);

    /**
     * 查询备忘录配置
     * @param memoConfigQuery 查询条件
     * @param siteId 所属站点id
     * @return 备忘录配置列表信息
     */
    List<MemoConfigListVO> select(MemoConfigQuery memoConfigQuery, String siteId);

    /**
    * 查询备忘录配置记录数
    * @param memoConfigQuery 查询条件
    * @param siteId 所属站点id
    * @return 备忘录配置记录数
    */
    int selectCount(MemoConfigQuery memoConfigQuery, String siteId);

    /**
     * 分页查询备忘录配置
     * @param memoConfigQuery 查询条件
     * @param siteId 所属站点id
     * @return 备忘录配置列表信息
     */
    Page<MemoConfigListVO> selectPage(MemoConfigQuery memoConfigQuery, String siteId);


    /**
     * 根据备忘录配置id查找
     * @param memoConfigId 备忘录配置id
     * @param siteId 所属站点id
     * @return 备忘录配置
     */
    MemoConfigDO selectDOById(String memoConfigId, String siteId);

    /**
     * 查询备忘录配置
     * @param memoConfigQuery 查询条件
     * @param siteId 所属站点id
     * @return 备忘录配置列表
     */
    List<MemoConfigDO> selectDO(MemoConfigQuery memoConfigQuery, String siteId);

    /**
     * 更新备忘录
     * @param memoInfoUpdateDTO
     * @param tokenUser
     */
    void updateByMemoId(MemoInfoUpdateDTO memoInfoUpdateDTO, TokenUser tokenUser);

    /**
     * 删除备忘录
     * @param memoInfoId
     * @param tokenUser
     */
    void deleteByMemoId(String memoInfoId, TokenUser tokenUser);
}


